# 设置项目所需的最低 CMake 版本 (建议 >= 3.12)
cmake_minimum_required(VERSION 3.12 FATAL_ERROR)

# 定义项目名称，指定使用的语言为 C++
project(PythonModuleDetection LANGUAGES CXX)

# 强制使用 C++11 或更高标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# --- Python 及模块检测 ---
# 使用 FindPython 模块同时查找解释器、开发环境和 NumPy 包
find_package(Python COMPONENTS Interpreter Development NumPy REQUIRED)

# 检查是否成功找到所有组件，并打印信息
if(Python_FOUND)
    message(STATUS "Successfully found all required Python components:")
    message(STATUS "  Interpreter: ${Python_EXECUTABLE} (version ${Python_VERSION_STRING})")
    message(STATUS "  Includes:    ${Python_INCLUDE_DIRS}")
    message(STATUS "  Libraries:   ${Python_LIBRARIES}")
    if(Python_NumPy_FOUND)
        message(STATUS "  NumPy:       Found (version ${Python_NumPy_VERSION})")
        # 如果 FindPython 提供了 NumPy 的包含路径或库，可以在这里打印
        # if(Python_NumPy_INCLUDE_DIRS) message(STATUS "  NumPy Includes: ${Python_NumPy_INCLUDE_DIRS}") endif()
        # if(Python_NumPy_LIBRARIES) message(STATUS "  NumPy Libraries: ${Python_NumPy_LIBRARIES}") endif()
    endif()
else()
     # 由于 REQUIRED，这里通常不会被执行
     message(FATAL_ERROR "Could not find required Python components (Interpreter, Development, NumPy).")
endif()

# --- 构建可执行文件 ---
# 添加一个可执行目标
add_executable(pureEmbedding pureEmbedding.cpp)

# 为可执行目标添加 Python 头文件目录
target_include_directories(pureEmbedding
  PRIVATE
      ${Python_INCLUDE_DIRS} # 使用 FindPython 设置的变量
)

# 将 Python 库链接到可执行目标
target_link_libraries(pureEmbedding
  PRIVATE
      ${Python_LIBRARIES} # 使用 FindPython 设置的变量
      # 如果 FindPython 提供了 NumPy 的库，并且需要链接，可以添加在这里
      # ${Python_NumPy_LIBRARIES}
)

# --- 复制 Python 脚本到构建目录 ---
# 定义一个自定义命令，将 useNumpy.py 从源目录复制到构建目录
add_custom_command(
  OUTPUT
      ${CMAKE_CURRENT_BINARY_DIR}/useNumpy.py
  COMMAND
      ${CMAKE_COMMAND} -E copy_if_different
      ${CMAKE_CURRENT_SOURCE_DIR}/useNumpy.py
      ${CMAKE_CURRENT_BINARY_DIR}/useNumpy.py
  DEPENDS
      ${CMAKE_CURRENT_SOURCE_DIR}/useNumpy.py
  COMMENT "Copying useNumpy.py to build directory"
)

# 将复制的 Python 文件添加为可执行目标的源文件，以确保复制命令在构建目标前执行
target_sources(pureEmbedding
  PRIVATE
      ${CMAKE_CURRENT_BINARY_DIR}/useNumpy.py
)